#ifndef ALARM_PARAM_H
#define ALARM_PARAM_H

#include <QtCore>

//前置声明
typedef struct _SAlarmParam SAlarmParam;

typedef struct _SAlarmParam
{
public:
    //拷贝参数值
    void CopyFrom(SAlarmParam* that);

    void CopyWarn(SAlarmParam* that);
    void CopyAlarm(SAlarmParam* that);
    void CopyProt(SAlarmParam* that);
    void CopyWarnHC(SAlarmParam* that);
    void CopyAlarmHC(SAlarmParam* that);
    void CopyProtHC(SAlarmParam* that);

    void InitToInvalid();

    void InitToZero();

    void InitToValue(float fvalue);
    void InitToWarn(float fvalue);
    void InitToAlarm(float fvalue);
    void InitToProt(float fvalue);
    void InivalidWarnHC(float fvalue);
    void InitToAlarmHC(float fvalue);
    void InitToProtHC(float fvalue);

public:
    float fBankVolUpLimitWarn;
    float fBankVolDownLimitWarn;
    float fChargeCurUpLimitWarn;
    float fDischargeCurUpLimitWarn;
    float fSglVolUpLimitWarn;
    float fSglVolDownLimitWarn;
    float fChargeSglTempUpLimitWarn;
    float fChargeSglTempDownLimitWarn;
    float fDchargeSglTempUpLimitWarn;
    float fDchargeSglTempDownLimitWarn;
    float fSglTempUpLimitWarn;
    float fSglTempDownLimitWarn;
    float fEnvTempUpLimitWarn;
    float fEnvTempDownLimitWarn;
    float fPowerLineTempUpLimitWarn;
    float fBankSocUpLimitWarn;
    float fBankSocDownLimitWarn;
    float fPosResDownLimitWarn;
    float fNegResDownLimitWarn;
    float fPackVolDiffUpLimitWarn;
    float fPackTempDiffUpLimitWarn;
    float fBankVolDiffUpLimitWarn;
    float fPackVolUpLimitWarn;
    float fPackVolDownLimitWarn;
    float fCellVolDiffUpLimitWarn;
    float fCellTempDiffUpLimitWarn;
    float fModuleVolDiffUpLimitWarn;
    float fHvPowerLineTempUpLimitWarn;

    float fBankVolUpLimitAlarm;
    float fBankVolDownLimitAlarm;
    float fChargeCurUpLimitAlarm;
    float fDischargeCurUpLimitAlarm;
    float fSglVolUpLimitAlarm;
    float fSglVolDownLimitAlarm;
    float fChargeSglTempUpLimitAlarm;
    float fChargeSglTempDownLimitAlarm;
    float fDchargeSglTempUpLimitAlarm;
    float fDchargeSglTempDownLimitAlarm;
    float fSglTempUpLimitAlarm;
    float fSglTempDownLimitAlarm;
    float fEnvTempUpLimitAlarm;
    float fEnvTempDownLimitAlarm;
    float fPowerLineTempUpLimitAlarm;
    float fBankSocUpLimitAlarm;
    float fBankSocDownLimitAlarm;
    float fPosResDownLimitAlarm;
    float fNegResDownLimitAlarm;
    float fPackVolDiffUpLimitAlarm;
    float fPackTempDiffUpLimitAlarm;
    float fBankVolDiffUpLimitAlarm;
    float fPackVolUpLimitAlarm;
    float fPackVolDownLimitAlarm;
    float fCellVolDiffUpLimitAlarm;
    float fCellTempDiffUpLimitAlarm;
    float fModuleVolDiffUpLimitAlarm;
    float fHvPowerLineTempUpLimitAlarm;

    float fBankVolUpLimitProt;
    float fBankVolDownLimitProt;
    float fChargeCurUpLimitProt;
    float fDischargeCurUpLimitProt;
    float fSglVolUpLimitProt;
    float fSglVolDownLimitProt;
    float fChargeSglTempUpLimitProt;
    float fChargeSglTempDownLimitProt;
    float fDchargeSglTempUpLimitProt;
    float fDchargeSglTempDownLimitProt;
    float fSglTempUpLimitProt;
    float fSglTempDownLimitProt;
    float fEnvTempUpLimitProt;
    float fEnvTempDownLimitProt;
    float fPowerLineTempUpLimitProt;
    float fBankSocUpLimitProt;
    float fBankSocDownLimitProt;
    float fPosResDownLimitProt;
    float fNegResDownLimitProt;
    float fPackVolDiffUpLimitProt;
    float fPackTempDiffUpLimitProt;
    float fBankVolDiffUpLimitProt;
    float fPackVolUpLimitProt;
    float fPackVolDownLimitProt;
    float fCellVolDiffUpLimitProt;
    float fCellTempDiffUpLimitProt;
    float fModuleVolDiffUpLimitProt;
    float fHvPowerLineTempUpLimitProt;

    float fBankVolUpLimitWarnHC;
    float fBankVolDownLimitWarnHC;
    float fChargeCurUpLimitWarnHC;
    float fDischargeCurUpLimitWarnHC;
    float fSglVolUpLimitWarnHC;
    float fSglVolDownLimitWarnHC;
    float fChargeSglTempUpLimitWarnHC;
    float fChargeSglTempDownLimitWarnHC;
    float fDchargeSglTempUpLimitWarnHC;
    float fDchargeSglTempDownLimitWarnHC;
    float fSglTempUpLimitWarnHC;
    float fSglTempDownLimitWarnHC;
    float fEnvTempUpLimitWarnHC;
    float fEnvTempDownLimitWarnHC;
    float fPowerLineTempUpLimitWarnHC;
    float fBankSocUpLimitWarnHC;
    float fBankSocDownLimitWarnHC;
    float fPosResDownLimitWarnHC;
    float fNegResDownLimitWarnHC;
    float fPackVolDiffUpLimitWarnHC;
    float fPackTempDiffUpLimitWarnHC;
    float fBankVolDiffUpLimitWarnHC;
    float fPackVolUpLimitWarnHC;
    float fPackVolDownLimitWarnHC;
    float fCellVolDiffUpLimitWarnHC;
    float fCellTempDiffUpLimitWarnHC;
    float fModuleVolDiffUpLimitWarnHC;
    float fHvPowerLineTempUpLimitWarnHC;

    float fBankVolUpLimitAlarmHC;
    float fBankVolDownLimitAlarmHC;
    float fChargeCurUpLimitAlarmHC;
    float fDischargeCurUpLimitAlarmHC;
    float fSglVolUpLimitAlarmHC;
    float fSglVolDownLimitAlarmHC;
    float fChargeSglTempUpLimitAlarmHC;
    float fChargeSglTempDownLimitAlarmHC;
    float fDchargeSglTempUpLimitAlarmHC;
    float fDchargeSglTempDownLimitAlarmHC;
    float fSglTempUpLimitAlarmHC;
    float fSglTempDownLimitAlarmHC;
    float fEnvTempUpLimitAlarmHC;
    float fEnvTempDownLimitAlarmHC;
    float fPowerLineTempUpLimitAlarmHC;
    float fBankSocUpLimitAlarmHC;
    float fBankSocDownLimitAlarmHC;
    float fPosResDownLimitAlarmHC;
    float fNegResDownLimitAlarmHC;
    float fPackVolDiffUpLimitAlarmHC;
    float fPackTempDiffUpLimitAlarmHC;
    float fBankVolDiffUpLimitAlarmHC;
    float fPackVolUpLimitAlarmHC;
    float fPackVolDownLimitAlarmHC;
    float fCellVolDiffUpLimitAlarmHC;
    float fCellTempDiffUpLimitAlarmHC;
    float fModuleVolDiffUpLimitAlarmHC;
    float fHvPowerLineTempUpLimitAlarmHC;

    float fBankVolUpLimitProtHC;
    float fBankVolDownLimitProtHC;
    float fChargeCurUpLimitProtHC;
    float fDischargeCurUpLimitProtHC;
    float fSglVolUpLimitProtHC;
    float fSglVolDownLimitProtHC;
    float fChargeSglTempUpLimitProtHC;
    float fChargeSglTempDownLimitProtHC;
    float fDchargeSglTempUpLimitProtHC;
    float fDchargeSglTempDownLimitProtHC;
    float fSglTempUpLimitProtHC;
    float fSglTempDownLimitProtHC;
    float fEnvTempUpLimitProtHC;
    float fEnvTempDownLimitProtHC;
    float fPowerLineTempUpLimitProtHC;
    float fBankSocUpLimitProtHC;
    float fBankSocDownLimitProtHC;
    float fPosResDownLimitProtHC;
    float fNegResDownLimitProtHC;
    float fPackVolDiffUpLimitProtHC;
    float fPackTempDiffUpLimitProtHC;
    float fBankVolDiffUpLimitProtHC;
    float fPackVolUpLimitProtHC;
    float fPackVolDownLimitProtHC;
    float fCellVolDiffUpLimitProtHC;
    float fCellTempDiffUpLimitProtHC;
    float fModuleVolDiffUpLimitProtHC;
    float fHvPowerLineTempUpLimitProtHC;

    float fResWarn1;                   // 预留告警
    float fResWarn2;
    float fResWarn3;
    float fResWarn4;
    float fResAlarm1;
    float fResAlarm2;
    float fResAlarm3;
    float fResAlarm4;
    float fResProt1;
    float fResProt2;
    float fResProt3;
    float fResProt4;

    float fResWarnHC1;
    float fResWarnHC2;
    float fResWarnHC3;
    float fResWarnHC4;
    float fResAlarmHC1;
    float fResAlarmHC2;
    float fResAlarmHC3;
    float fResAlarmHC4;
    float fResProtHC1;
    float fResProtHC2;
    float fResProtHC3;
    float fResProtHC4;
}SAlarmParam;

#endif //ALARM_PARAM_H
